不可不知的2个实用DID双重差分模型中平行趋势图命令)
不可不知的2个实用DID双重差分模型中平行趋势图命令
下面介绍两组命令,进行DID双重差分模型中平行趋势检验,分别为 eventdd以及coefplo命令。
1、eventdd—估计面板事件研究模型并生成事件研究图:
eventdd估计了一个面板事件研究,对应于一个DID风格的模型,其中有一系列滞后和上一期系数 估计并绘制置信区间。
估计模型的一般格式为:
y_st = Alpha + Lead^K_st * BetaK + ... + Lead^2_st * Beta2 + Lag^0_st * gamma0 + ... Lag^L_st * gammaL + mu_s + lambda_t + u_st (1)
其中y_st是个体s和时间t的结果 一系列K上一期和L滞后被认为是相对于事件的时间 个体和时间的固定效果分别包括在mu_s和lambda_t。
该命令要求指定基本模型时不带超前和滞后,并且应该在timevar()中指定一个变量定义事件发生之前的标准时间版本,其中缺少事件从未发生的单元的值(控制)单位。
该命令生成估计结果和一个图表,记录所有指示的系数和置信区间。
该命令还可以指定应该使用xtreg或reghdfe进行估计(如果安装)。
1.1 语法格式
eventdd depvar [indepvars] [if] [in] [weight], timevar(varname) [options]
1.2 选项含义
timevar(varname)相对于感兴趣的事件的标准化时间变量。这是必需的。设置时间
ci(type, ...)指定置信区间的图形类型:rarea(带区域阴影)、rcap(带上限峰值)或 rline(带线),以及绘图选项: twoway rarea for ea} (eg area), twoway rcap for rcap (eg line) or twoway rline for rline (eg connect) 应传递到结果事件研究图。rcap是默认的图形类型。
baseline(#)相对于感兴趣的事件发生时刻的基线周期;默认值是-1。
level(#) 设置置信度;默认是level(95)。
method(type, [absorb(absvars)] * ...)指定估计方法:ols(使用Stata的regress 命令)、fe(使用Stata的xtreg、fe命令)或hdfe(使用用户编写的reghdfe命令),以及任何额外的估计选项和vce选项传递到事件研究模型(如robust 或 clustered估计)。absorb(absvars)子选项只在hdfe选项时需要。ols是默认的估计方法。
1.3 案例应用
下面以《专利质押、融资约束与企业劳动雇佣》为例讲解一下如何使用该命令进行平行趋势检验。
政策背景:专利质押融资试点政策是研究专利质押影响企业劳动雇佣的一个良好的准自然实验。本文借助于专利质押融资试点政策的外生冲击,采用广义双重差分法,检验专利质押对企业劳动雇佣的影响。
变量介绍:
其中,被解释变量Y为企业劳动雇佣规模,用企业员工人数取自然对数进行度量。企业高技术水平员工规模,用企业技术人员取自然对数进行度量。
主要解释变量 Policy 为专利质押融资试点政策施行与否的虚拟变量。当上市公司所在地区为知识产权质押融资试点地区且时间为政策颁布的下一年及以后时,Policy 取1,否则取0①。
控制变量向量X中包括企业层面和地区层面的控制变量。
企业层面控制变量主要包括企业规模(Size)、资产负债室(Ler)、资产收益率(Roa)以及股权性质(Soe)。
地区层面控制变量主要包括地级市人均GDP(P_CDP)、地级市第二产业比重(Second_ind)。λ和n分别表示企业和年度固定效应。我们对企业层面进行了聚类,以控制整个样本期内企业层面的任意结构依存性。
1.4 DID 双重差分模型
**# 3、基准回归分析--**********3.1基准回归-表3**********(P8页)
use 数据, clear
xtset code year
qui xtreg Labor Policy i.year,fe vce(cluster code) // 不带控制变量 //
est store m1
qui xtreg Labor Policy $c i.year ,fe vce(cluster code)
est store m2
qui xtreg Hlabor Policy i.year ,fe vce(cluster code)
est store m3
qui xtreg Hlabor Policy $c i.year ,fe vce(cluster code)
est store m4
lxhreg m1 m2 m3 m4 using 基准回归结果1.rtf, replace t(%13.3f) b(%13.3f) drop( *year* )
结果为:
1.5 平行趋势检验
采用双重差分法的前提是,实验组与控制组在专利质押融资试点政策施行前企业的劳动雇佣规模、高技术水平员工规模的趋势是保持平行的,若政策试点前的趋势不平行,则政策试点后的趋势也可能不平行,从而导致有偏的结果。由于政策试点在在多个时期,本文借鉴 Clarke 和Tapia-Schythe(2021)、Barrios(2021)的思路,利用当前处理交错型 DID 的较为新颖的事件研究法(Event Study Method)检验政策的动态处理效应。
绘制平行趋势检验图的命令为:
**# 4、**********3.2 DID有效性检验与其他稳健性测试**********
************平行趋势检验-图2******
use 数据,clear
xtset code year
replace Policy_year=. if Policy_year==0
gen yeardif=year-Policy_year
xtset code year
eventdd Labor $c i.year, timevar(yeardif) method(fe) cluster(code) level(95) baseline(0) ///
graph_op( yline(0,lcolor(edkblue*0.8) ) ///
xlabel(-6 "- 6" -5 "- 5" -4 "- 4" -3 "- 3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6") ///
ylabel(-0.1(0.1)0.4,format (%7.1f)) ///
xline(0 ,lwidth(vthin) lpattern(dash) lcolor(teal)) ///
xtitle(`"{fontface "宋体": 政策时点}"', size(medium small)) ///
ytitle(`"{fontface "宋体": 回归系数}{stSerif: (Labor)}"', size(medium small)) ///
legend(order(2 `"{fontface "宋体": 回归系数}"' 1 "95% confidence interval" )) scheme(s1mono))
graph export "平行趋势Labor.png", replace
eventdd Hlabor $c i.year, timevar(yeardif) method(fe) cluster(code) level(95) baseline(0) ///
graph_op( yline(0,lcolor(edkblue*0.8) ) ///
xlabel(-6 "- 6" -5 "- 5" -4 "- 4" -3 "- 3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6") ///
ylabel(-0.2(0.2)1,format (%7.1f)) ///
xline(0 ,lwidth(vthin) lpattern(dash) lcolor(teal)) ///
xtitle(`"{fontface "宋体": 政策时点}"', size(medium small)) ///
ytitle(`"{fontface "宋体": 回归系数}{stSerif: (HLabor)}"', size(medium small)) ///
legend(order(2 `"{fontface "宋体": 回归系数}"' 1 "95% confidence interval" )) scheme(s1mono))
graph export "平行趋势HLabor.png", replace
结果为:
图1:平行趋势Labor.png
图2:平行趋势HLabor.png
结果解释:图2绘制了在95%置信水平的专利质押融资政策试点的平行趋势图。图平行趋势Labor.png表明,在专利质押政策实施前,试点地区与非试点地区的劳动雇佣并不存在显著差异,而政策试点对劳动雇佣的影响出现在政策实施一年及以后。图平行趋势HLabor.png显示,专利质押政策出台前,试点地区与非试点地区的高技术水平员工规模并不存在显著差异,在政策实施后,企业高技术员工规模的增长存在一定持续性。以上结果支持了平行趋势假设。
2、coefplot:双重差分模型操作应用
2.1 Difference in differences (DID) Estimation step‐by‐step双重差分操作步骤
首先我们读入所需数据,生成政策前后以及控制组虚拟变量,并将它们相乘产生交互项。
2.1 方法一:
Getting sample data调用数据
use "Panel101.dta", clear
gen time = (year>=1994) & !missing(year)
gen treated = (country>4) & !missing(country)
gen did = time*treated
reg y time treated did, r
结果为:
结果解释:did的系数显著为负,表明政策实施对Y有显著的(10%显著性水平下)负效应
2.2 方法二:diff
The command diff is user‐defined for Stata,To install type
ssc install diff下载外部命令方法
diff y, t(treated) p(time)
结果为:
三、双重差分平行趋势检验
2.3 平行趋势检验
首先生成年份虚拟变量与实验组虚拟变量的交互项,此处选在政策前后各3年进行对比。
gen period = year - 1994
forvalues i = 3(-1)1{
gen pre_`i' = (period == -`i' & treated == 1) }
gen current = (period == 0 & treated == 1)
forvalues j = 1(1)3{
gen time_`j' = (period == `j' & treated == 1)
}
随后将这些交互项作为解释变量进行回归,并将结果储存在reg中以备后续检验。
xtreg y time treated pre_* current time_* i.year, fe
est sto reg
2.4 平行趋势图:coefplot
采用coefplot命令进行绘图,观察是否1994年前的回归系数均在0轴附近波动,在1994年后回归系数显著为负。
coefplot reg, keep(pre_* current post_*) vertical recast(connect) yline(0) xline(3, lp(dash))
结果为:
结果发现系数在政策前的确在0附近波动,而政策后一年系数显著为负,但很快又回到0附近。这说明实验组和控制组的确是可以进行比较的,而政策效果可能出现在颁布后一年,随后又很快消失。